package com.spsoft.workflow.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.spsoft.workflow.entity.WfProcessBusiness;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.spsoft.workflow.model.dto.bus.QueryProcessDto;
import com.spsoft.workflow.model.vo.biz.BaseUserVo;
import com.spsoft.workflow.model.vo.biz.BusinessFlowVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 * 流程业务表;--主键序列 SEQ_WF_PROCESS_BUSINESS Mapper 接口
 * </p>
 *
 * @author dlchen
 * @since 2023-11-13
 */
public interface WfProcessBusinessMapper extends BaseMapper<WfProcessBusiness> {
    @Select("SELECT SEQ_WF_PROCESS_BUSINESS.NEXTVAL FROM DUAL")
    Long getNextSequenceValue();

    /**
     *  已完成
     *
     * @param page     页
     * @param pqd      查询条件
     */
    IPage<BusinessFlowVo> queryProcessHasDone(Page page, @Param("pqd") QueryProcessDto pqd);
    /**
     * 我发起的
     *
     * @param page
     * @param pqd
     * @return
     */
    IPage<BusinessFlowVo> queryStartProcessMyself(Page page, @Param("pqd") QueryProcessDto pqd);
    /**
     * 我的代办
     *
     * @param page
     * @param pqd
     * @return
     */
    IPage<BusinessFlowVo> queryProcessToDo(Page page, @Param("pqd") QueryProcessDto pqd);

    /**
     * 根据流程id 用户，机构，查询流程代办情况
     *
     * @param busId    总线id
     * @param userCode 用户代码
     * @param deptCode dept代码
     * @return {@link IPage}<{@link BusinessFlowVo}>
     */
    List<BusinessFlowVo> queryProcessToDoBuyId(  @Param("busId") Long busId, @Param("userCode") String userCode,@Param("deptCode") String deptCode);

    /**
     * 查找审批用户
     *
     * @param deptCode dept代码
     * @param roleList 角色列表
     * @return {@link List}<{@link BaseUserVo}>
     */
    List<BaseUserVo> findApprovalUser(@Param("deptCode") String deptCode, @Param("roleList") List<String> roleList);


    /**
     * 根据业务id查找流程业务带有创建人名称的
     *
     * @param busId 总线id
     * @return {@link List}<{@link WfProcessBusiness}>
     */
    List<WfProcessBusiness> getBusById(@Param("busId") Long busId);

}
